﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using Model;
using System.Collections;
using BLL;

/*
 * 页面权限判断基类
 * 原理：
 * 根据角色ID，读取权限表，获取所有权限，如下所示
 *  311	studinfoMenu	学生管理	211
 *  111	jwgl	教务管理	0
 *  312	teacherinfoMenu	教师管理	211
 *  212	classinfoMenu	班级管理	111
 * 判断当前页面的url是否为其中一个文件的名字，如果不在列表中
 * 则提示页面未找到
 */

namespace Web
{
    public class UIPage : System.Web.UI.Page
    {
        public static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        protected override void OnPreInit(EventArgs e)
        {
            if (Session["currentUserID"] == null || Session["userpwd"] == null || Session["role"] == null)
                Response.Redirect("/View/404.html");
            rolefunMgr mgr = new rolefunMgr();
            IList<userfun> power = new List<userfun>();
            if (Session["rolepower"] != null)
                power = (List<userfun>)Session["rolepower"];
            else
            {
                power = mgr.FindRoleFun(Session["role"].ToString());
                Session["rolepower"] = power;
            }
            //判断角色是否能访问该文件
            string currenturl = Request.RawUrl.ToLower().Replace("/view/", "");
            currenturl = currenturl.Substring(0, currenturl.IndexOf('/'));
            if (!IsPostBack)
                log.Debug("来自IP" + Request.UserHostAddress + "的用户" + Session["currentUserID"].ToString() + "正在访问:" + currenturl + "页面");

            foreach (userfun fun in power)
            {
                if (fun.funno.ToLower() == currenturl || fun.funno.ToLower().Replace("plmsmpo", "plmsmpol") == currenturl || fun.funno.ToLower().Replace("plmsmps", "plmsmpsl") == currenturl)
                    return;
            }
            if (!IsPostBack)
                log.Debug("访问权限被拒绝！！！");
            Response.Redirect("/View/404.html");
            base.OnPreInit(e);
        }

    }
}